#ifndef M_RAND_GENERATOR
#define M_RAND_GENERATOR
#include"halton.h"
typedef float Float;
class RandGenerator
{
public:
	virtual void setSeeds(long long *seeds) = 0;
	virtual Float genRand() = 0;
};

class HaltonGenerator :public RandGenerator
{
private:
	long long seed;
	int haltonDim;
public:
	HaltonGenerator(long long seed = 0);
	void setSeeds(long long *_seed);
	Float genRand();
};

class DefaultRandGenerator :public RandGenerator
{

public:
	DefaultRandGenerator(long long seed = 0);
	void setSeeds(long long *_seed);
	Float genRand();
};
#endif // !M_RAND_GENERATOR

